package com.webcat.service;

import com.webcat.entity.SseResponse;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.model.function.FunctionCallback;
import org.springframework.ai.tool.ToolCallback;
import org.springframework.ai.tool.method.MethodToolCallback;
import org.springframework.web.multipart.MultipartFile;
import reactor.core.publisher.Flux;

import java.util.List;

public interface ChatService {

    String start();

    Flux<SseResponse<Object>> streamChat(String chatId, String message, Boolean multiConversation);

    Flux<SseResponse<Object>> streamChat(String chatId, String message, String datasetId, Boolean multiConversation);

    Flux<SseResponse<Object>> streamChat(String chatId, String message, String datasetId, String businessId, Boolean multiConversation);

    String chat(String chatId, String message, String businessId, Boolean multiConversation);

    String chat(String chatId, Prompt prompt, Boolean multiConversation);

    List<ToolCallback> getTools();

    Flux<SseResponse<Object>> streamChatWithFile(String chatId, String message, MultipartFile file, Boolean multiConversation);
}
